package com.koron.operation.classes.form.bean.po;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.koron.bean.annocation.FillField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * 月度排班班次(ClassesFormShift)表实体类
 *
 * @author jzp
 * @since 2023-05-17
 */
@Data
@ApiModel(value = "月度排班班次", description = "ClassesFormShift")
public class ClassesFormShift {

    /**
     * ID
     */
    @FillField
    @ApiModelProperty("ID")
    private String id;

    /**
     * 班别方案id
     */
    @ApiModelProperty("班别方案id")
    private String classesId;

    /**
     * 班别班次id
     */
    @ApiModelProperty("班别班次id")
    private String classesItemId;

    /**
     * 班别班次名称
     */
    @ApiModelProperty("班别班次名称")
    private String classesItemName;

    /**
     * 排班表ID
     */
    @ApiModelProperty("排班表ID")
    private String formId;

    /**
     * 排班职级表ID
     */
    @ApiModelProperty("排班职级表ID")
    private String rowId;

    /**
     * 职级ID
     */
    @ApiModelProperty("职级ID")
    private String rankId;

    /**
     * 职级名称
     */
    @ApiModelProperty("职级名称")
    private String rankName;

    /**
     * 职级拼音
     */
    @ApiModelProperty("职级拼音")
    private String rankPinyin;

    /**
     * 用户id
     */
    @ApiModelProperty("用户id")
    private String userId;

    /**
     * 用户名称
     */
    @ApiModelProperty("用户名称")
    private String userName;

    /**
     * 用户拼音
     */
    @ApiModelProperty("用户拼音")
    private String userPinyin;

    /**
     * 班别开始时间
     */
    @ApiModelProperty("班别开始时间")
    private Date classesStartTime;

    /**
     * 值班时长(h)
     */
    @ApiModelProperty("值班时长(h)")
    private String duration;

    /**
     * 班别结束时间
     */
    @ApiModelProperty("班别结束时间")
    private Date classesEndTime;

    /**
     * 加班开始时间，初始化过来的值，后续不变
     */
    @ApiModelProperty("加班开始时间")
    private Date overStartTime;

    /**
     * 加班结束时间，初始化过来的值，后续不变
     */
    @ApiModelProperty("加班结束时间")
    private Date overEndTime;

    /**
     * 加班时长(h)，初始化过来的值，也会随着加班申请变化而变化
     * 用于计算加班时间，为最终加班时间
     */
    @ApiModelProperty("加班时长(h)")
    private String overDuration;

    /**
     * 换班ID，随着调班申请变化而变化
     * 为最终换班ID
     */
    @ApiModelProperty("换班ID")
    private String changeItemId;

    /**
     * 换班名称，随着调班申请变化而变化
     * 为最终换班名称
     */
    @ApiModelProperty("换班名称")
    private String changeItemName;

    /**
     * 班次变更状态
     */
    @ApiModelProperty("班次变更状态")
    private String changeStatus;

    /**
     * 值班日期
     */
    @ApiModelProperty("值班日期, yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date shiftDate;

    /**
     * 星期几
     */
    @ApiModelProperty("星期几")
    private String shiftWeekday;

    /**
     * 值班开始时间
     */
    @ApiModelProperty("值班开始时间")
    private Date startTime;

    /**
     * 值班结束时间
     */
    @ApiModelProperty("值班结束时间")
    private Date endTime;

    /**
     * 值班状态，数据字典：operation_shift_status
     */
    @ApiModelProperty("值班状态，数据字典：operation_shift_status")
    private Integer status;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Integer sort;

    /**
     * 班别说明
     */
    @ApiModelProperty("班别说明")
    private String remark;

    /**
     * 创建时间
     */
    @FillField
    @ApiModelProperty("创建时间")
    private Date createTime;

}
